home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / prlgbnch.lha / mu.pl < prev    next >
Text File  |  1990-05-25  |  765b  |  42 lines

  1. % generated: 9 November 1989
  2. % option(s): 
  3. %
  4. %   mu
  5. %
  6. %   derived from Douglas R. Hofstadter, "Godel, Escher, Bach," pages 33-35.
  7. %
  8. %   prove "mu-math" theorem muiiu
  9.  
  10. mu :- theorem([m,u,i,i,u], 5, _), !.
  11.  
  12. theorem([m,i], _, [[a|[m,i]]]).
  13. theorem(R, Depth, [[N|R]|P]) :-
  14.     Depth > 0,
  15.     D is Depth-1,
  16.     theorem(S, D, P),
  17.     rule(N, S, R).
  18.  
  19. rule(1, S, R) :- rule1(S, R).
  20. rule(2, S, R) :- rule2(S, R).
  21. rule(3, S, R) :- rule3(S, R).
  22. rule(4, S, R) :- rule4(S, R).
  23.  
  24. rule1([i], [i,u]).
  25. rule1([H|X], [H|Y]) :-
  26.     rule1(X, Y).
  27.  
  28. rule2([m|X], [m|Y]) :- 
  29.     append(X, X, Y).
  30.  
  31. rule3([i,i,i|X], [u|X]).
  32. rule3([H|X], [H|Y]) :-
  33.     rule3(X, Y).
  34.  
  35. rule4([u,u|X], X).
  36. rule4([H|X], [H|Y]) :-
  37.     rule4(X, Y).
  38.  
  39. append([], X, X).
  40. append([A|B], X, [A|B1]) :-
  41.     append(B, X, B1).
  42.